package main

// import (
// 	"fmt"
// 	"time"
// )

// func main7() {
// 	// 需要使用 make 初始化，var ch chan int 的通道类型是 nil
// 	ch := make(chan int, 1)
// 	defer close(ch)
// 	fmt.Println(ch)
// 	go func(ch *chan int) {
// 		// 接受，从通道接受参数
// 		val := <-*ch
// 		fmt.Println("接收到值，val::", val)
// 	}(&ch)
// 	// 发送，将一个值发送到 ch 通道中
// 	ch <- 100
// 	defer close(ch)
// 	fmt.Println("你好啊")
// 	time.Sleep(1 * time.Second)
// }

import (
	"fmt"
	"time"
)

// 判断管道有没有存满
func main7() {
	// 创建管道
	output1 := make(chan string, 10)
	// 子协程写数据
	go write(output1)
	// 取数据
	for s := range output1 {
		fmt.Println("res:", s)
		time.Sleep(time.Second)
	}
}

func write(ch chan string) {
	flag := false
	for {
		select {
		// 写数据
		case ch <- "hello":
			fmt.Println("write hello")
		default:
			fmt.Println("channel full")
			flag = true
		}
		if flag {
			break
		}
		time.Sleep(time.Millisecond * 500)
	}
}
